home *** CD-ROM | disk | FTP | other *** search
/ Hackers Handbook - Millenium Edition / Hackers Handbook.iso / files / c_scripts / Cgichk.c < prev    next >
C/C++ Source or Header  |  1998-12-05  |  4KB  |  143 lines

  1. /* Tested on Slackware linux with kernel 2.0.35 */
  2.  
  3. #include <fcntl.h>
  4. #include <sys/types.h>
  5. #include <sys/socket.h>
  6. #include <netinet/in.h>
  7. #include <signal.h>
  8. #include <stdio.h>
  9. #include <string.h>
  10. #include <netdb.h>
  11. #include <ctype.h>
  12. #include <arpa/nameser.h>
  13. #include <sys/stat.h>
  14. #include <strings.h>
  15. #include <stdio.h>
  16. #include <stdlib.h>
  17. #include <unistd.h>
  18. #include <sys/socket.h>
  19.  
  20. void main(int argc, char *argv[])
  21. {
  22.  int sock,debugm=0;
  23.  struct in_addr addr;
  24.  struct sockaddr_in sin;
  25.  struct hostent *he;
  26.  unsigned long start;
  27.  unsigned long end;
  28.  unsigned long counter;
  29.  char foundmsg[] = "200";
  30.  char *cgistr;
  31.  char buffer[1024];
  32.  int count=0;
  33.  int numin;
  34.  char cgibuff[1024];
  35.  char *buff[50];    /* Don't u think 50 is enought? */
  36.  char *cginame[50]; /* Don't u think 50 is enought? */
  37.  
  38.  buff[1] = "GET /cgi-bin/phf HTTP/1.0\n\n";
  39.  buff[2] = "GET /cgi-bin/Count.cgi HTTP/1.0\n\n";
  40.  buff[3] = "GET /cgi-bin/test-cgi HTTP/1.0\n\n";
  41.  buff[4] = "GET /cgi-bin/php.cgi HTTP/1.0\n\n";
  42.  buff[5] = "GET /cgi-bin/handler HTTP/1.0\n\n";
  43.  buff[6] = "GET /cgi-bin/webgais HTTP/1.0\n\n";
  44.  buff[7] = "GET /cgi-bin/websendmail HTTP/1.0\n\n";
  45.  buff[8] = "GET /cgi-bin/webdist.cgi HTTP/1.0\n\n";
  46.  buff[9] = "GET /cgi-bin/faxsurvey HTTP/1.0\n\n";
  47.  buff[10] = "GET /cgi-bin/htmlscript HTTP/1.0\n\n";
  48.  buff[11] = "GET /cgi-bin/pfdispaly.cgi HTTP/1.0\n\n";
  49.  buff[12] = "GET /cgi-bin/perl.exe HTTP/1.0\n\n";
  50.  buff[13] = "GET /cgi-bin/wwwboard.pl HTTP/1.0\n\n";
  51.  
  52.  cginame[1] = "phf";
  53.  cginame[2] = "Count.cgi";
  54.  cginame[3] = "test-cgi";
  55.  cginame[4] = "php.cgi";
  56.  cginame[5] = "handler";
  57.  cginame[6] = "webgais";
  58.  cginame[7] = "websendmail";
  59.  cginame[8] = "webdist.cgi";
  60.  cginame[9] = "faxsurvey";
  61.  cginame[10] = "htmlscript";
  62.  cginame[11] = "pfdisplay";
  63.  cginame[12] = "perl.exe";
  64.  cginame[13] = "wwwboard.pl";
  65.  
  66.  if (argc<2)
  67.    {
  68.    printf("\nusage : %s host ",argv[0]);
  69.    printf("\n   Or : %s host -d   for debug mode\n\n",argv[0]); 
  70.    exit(0);
  71.    }
  72.  
  73.  if (argc>2)
  74.    {
  75.    if(strstr("-d",argv[2]))
  76.      {
  77.      debugm=1;
  78.      }
  79.    }
  80.  
  81.  if ((he=gethostbyname(argv[1])) == NULL)
  82.    {
  83.    herror("gethostbyname");
  84.    exit(0);
  85.    }
  86.  
  87.  printf("\n\n\t\t [CKS & Fdisk]'s CGI Checker\n\n\n");
  88.  start=inet_addr(argv[1]);
  89.  counter=ntohl(start);
  90.  
  91.    sock=socket(AF_INET, SOCK_STREAM, 0);
  92.    bcopy(he->h_addr, (char *)&sin.sin_addr, he->h_length);
  93.    sin.sin_family=AF_INET;
  94.    sin.sin_port=htons(80);
  95.  
  96.   if (connect(sock, (struct sockaddr*)&sin, sizeof(sin))!=0)
  97.      {
  98.      perror("connect");
  99.      }
  100.    printf("\n\n\t [ Press any key to check out the httpd version...... ]\n");
  101.    getchar(); 
  102.    send(sock, "HEAD / HTTP/1.0\n\n",17,0);
  103.    recv(sock, buffer, sizeof(buffer),0);
  104.    printf("%s",buffer);
  105.    close(sock); 
  106.    printf("\n\t [ Press any key to search 4 CGI stuff...... ]\n");
  107.    getchar();
  108.    
  109. while(count++ < 13)   /* Change 13 to how many buff[?] u have above */
  110.    {
  111.    sock=socket(AF_INET, SOCK_STREAM, 0);
  112.    bcopy(he->h_addr, (char *)&sin.sin_addr, he->h_length);
  113.    sin.sin_family=AF_INET;
  114.    sin.sin_port=htons(80);
  115.    if (connect(sock, (struct sockaddr*)&sin, sizeof(sin))!=0)
  116.      {
  117.      perror("connect");
  118.      }
  119.    printf("Searching for %s : ",cginame[count]);
  120.   
  121.    for(numin=0;numin < 1024;numin++)
  122.       {
  123.       cgibuff[numin] = '\0';
  124.       } 
  125.   
  126.    send(sock, buff[count],strlen(buff[count]),0);
  127.    recv(sock, cgibuff, sizeof(cgibuff),0);
  128.    cgistr = strstr(cgibuff,foundmsg);
  129.    if( cgistr != NULL)
  130.        printf("Found !! ;)\n");
  131.    else
  132.        printf("Not Found\n");
  133.       
  134.   if(debugm==1)
  135.     { 
  136.     printf("\n\n ------------------------\n %s \n ------------------------\n",cgibuff); 
  137.     printf("Press any key to continue....\n");
  138.     getchar();
  139.     }  
  140.    close(sock);
  141.    }
  142.  }
  143.